package com.atguigu.gmall.common.pool;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.*;

@Configuration
public class ThreadPool {

    // 准备线程池
    @Bean
    public ThreadPoolExecutor threadPoolExecutor() {
        // 办法1
        // Executors.newCachedThreadPool(); // 阿里开发手册强制禁止使用，因为核心线程设定成了最大值。
        // 办法2 手动创建线程池
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                5, // 核心线程数
                10, // 最大线程数
                10, // 核心线程以外线程数存活时间
                TimeUnit.SECONDS, // 时间单位
                new ArrayBlockingQueue<>(10)
        );
        return threadPoolExecutor;
    }
}
